///===============================================
///=  THIS FILE CODES VARIABLES FOR THE 1992-96  =
///=  ISSUES, PID, BELIEF, & BEHAVIOR VARIABLES. =
///=  I THEN RUN ALL OF THE MODELS AND FIGURES.  = 
///=  DATA CLEANED ON 7/05/16 BY PAUL GOREN.     = 
///===============================================

/// vpartic lists # respondents in merged file / NES merged file url
/// cases for 1992-1996 pre = 597 
/// cases for 1992-1996 pre+post = 545
/// vid92 shows 1005 cases valid, 1434 cases missing 
/// vid96 shows 1714 cases valid, 725 cases missing


version 13.1
use "C:\Data\NES\Nes9297", clear


/// =============================
/// = CODING OF ALL VARIABLES.  =
/// =============================
/// svy variables
fre v960122
generate strat = floor(v960122/10)
fre strat
generate clust = v960122-strat*10
fre clust

/// codebook online says 398 cases not in panel, get score 0 
fre v960004
gen wt96=v960004 
recode wt96 .=.z 0=.b
label variable wt96 "96 panel weight"
label define wt96 .b "96 cross, no other panel" .z "not in 96" 
label value wt96 wt96
fre wt96


/// Party ID 1992 
fre v923634
recode v923634 7/8=3 9=.y
gen pid92=v923634/6
replace pid92=.y if v923634==.
label define pid92 0 "Strong Democrat" 1 "Strong Republican" .y "not in 92"
label variable pid92 "Party ID 1992"
label value pid92 pid92
fre pid92


/// PID 1996
fre v960420
recode v960420 7/8=3 9=.z
gen pid96=v960420/6
replace pid96=.z if vid96==.
label define pid96 0 "Strong Democrat" 1 "Strong Republican" .z "not in 96"
label variable pid96 "Party ID 1996"
label value pid96 pid96
fre pid96


/// religious commitment 1992
fre v923822
gen pray92=v923822
recode pray92 1=1 2=.75 3=.5 4=.25 5=0 8/9=. .=.y 0=.
label define pray92 0 "never" 1 "several times week" .y "not in 92" 
label variable pray92 "how often pray"
label value pray92 pray92
fre pray92

fre v923826 v923828
gen attend92=v923828
recode attend92 1=1 2=.75 3=.5 4=.25 5=0 8/9=. .=.y
replace attend92=0 if v923826==5
replace attend92=. if v923826==0 
replace attend92=. if v923826==9
label define attend92 0 "never" 1 "several times week" .y "not in 92" 
label variable attend92 "how often attend church"
label value attend92 attend92
fre attend92

fre v923820 v923821
gen relimport92=v923821
recode relimport92 3=1 2=.666 1=.333 0=0 8=. .=.y
replace relimport92=. if v923820==0 | v923820==8 | v923820==9 
label define relimport92 0 "not at all" 1 "a great deal" .y "not in 92"
label variable relimport92 "how import rel life"
label value relimport92 relimport92
fre relimport92

/// polychoric pray92 attend92 relimport92
display (3*.650)/(1+.650*2)
egen relcom92miss=rowmiss(pray92 attend92 relimport92)
egen relcom92=rowmean(pray92 attend92 relimport92) if relcom92miss<2
replace relcom92=.y if pray92==.y
label variable relcom92 "rel commitment index"
label value relcom92 relimport92
fre relcom92miss relcom92


/// religious commitment 1996
fre v960573
gen pray96=v960573
recode pray96 1=1 2=.75 3=.5 4=.25 5=0 8/9=. .=.z
label define pray96 0 "never" 1 "several times week" .z "not in 96" 
label variable pray96 "how often pray"
label value pray96 pray96
fre pray96

fre v960576 v960578
gen attend96=v960578
recode attend96 1=1 2=.75 3=.5 4=.25 5=0 8/9=. .=.z
replace attend96=0 if v960576==5
replace attend96=. if v960576==8
label define attend96 0 "never" 1 "several times week" .z "not in 96" 
label variable attend96 "how often attend church"
label value attend96 attend96
fre attend96

fre v960571 v960572
gen relimport96=v960572
recode relimport96 3=1 2=.666 1=.333 0=0 8/9=. .=.z
replace relimport96=. if v960571==8 | v960571==9 
label define relimport96 0 "not at all" 1 "a great deal" .z "not in 96"
label variable relimport96 "how import rel life"
label value relimport96 relimport96
fre relimport96

/// polychoric pray96 attend96 relimport96
display (3*.657)/(1+.657*2)
egen relcom96miss=rowmiss(pray96 attend96 relimport96)
egen relcom96=rowmean(pray96 attend96 relimport96) if relcom96miss<2
replace relcom96=.z if pray96==.z
label variable relcom96 "rel commitment index"
label value relcom96 relimport96
fre relcom96miss relcom96


/// orthodox 1992
fre v923824
gen orthodox92=v923824
recode orthodox92 1=1 2/7=0 8/9=. 0=. .=.y
label define orthodox92 0 "not at all" 1 "yes" 0 "no" .y "not in 92"
label variable orthodox92 "Bible literal"
label value orthodox92 orthodox92
fre orthodox92

/// orthodox 1996
fre v960575
gen orthodox96=v960575
recode orthodox96 1=1 2/7=0 8/9=. 0=. .=.z
label define orthodox96 0 "not at all" 1 "yes" 0 "no" .z "not in 96"
label variable orthodox96 "Bible literal"
label value orthodox96 orthodox96
fre orthodox96


/// moralissues 1992
fre v923732
gen abort92=v923732
recode abort92 1=1 2=.666 3=.333 4/5=0 6/9=. .=.y
label variable abort92 "abort position"
label define abort92 0 "always" 1 "never" .y "not in 92"
label value abort92 abort92
fre abort92

fre v925335
gen homofeel92=v925335
replace homofeel92=1-(homofeel92/100)
replace homofeel92=. if v925335==998 | v925335==999
replace homofeel92=.y if v925335==.
label variable homofeel92 "homosexual FT"
label define feel92 0 "warm" 1 "cool" .y "not in 92"
label value homofeel92 feel92
fre homofeel92

fre v925923 v925924
gen job92=v925924
recode job92 1=0 2=.333 4=.666 5=1 0=. 8/9=. .=.y
label variable job92 "job prot gays"
label define job92 0 "strg favor" 1 "strg oppose" .y "not in 92"
label value job92 job92
fre job92

fre v925925 v925926
gen mil92=v925926
recode mil92 1=0 2=.333 4=.666 5=1 0=. 8/9=. .=.y
label variable mil92 "gays in mil"
label value mil92 job92
fre mil92

/// polychoric abort92 homofeel92 job92 mil92
display (4*.481)/(1+.481*3)
egen moralissues92miss=rowmiss(abort92 homofeel92 job92 mil92)
egen moralissues92=rowmean(abort92 homofeel92 job92 mil92) if moralissues92miss<2
replace moralissues92=.y if mil92==.y
label variable moralissues92 "moralissues index"
label define moralissues 0 "liberal" 1 "cons" .y "not in 92"
label value moralissues92 moralissues
fre moralissues92miss moralissues92


/// moral issues 1996
fre v960503
gen abort96=v960503
recode abort96 1=1 2=.666 3=.333 4/5=0 6/9=. .=.z
label variable abort96 "abort position"
label define abort96 0 "always" 1 "never" .z "not in 96"
label value abort96 abort96
fre abort96

fre v961042
gen homofeel96=v961042
replace homofeel96=1-(homofeel96/100)
replace homofeel96=. if v961042==997 | v961042==998 | v961042==999
replace homofeel96=.z if v961042==.
replace homofeel96=.p if v961042==996
label variable homofeel96 "homosexual FT"
label define feel96 0 "warm" 1 "cool" .z "not in 96" .p "no post int"
label value homofeel96 feel96
fre homofeel96

fre v961193 v961194
gen job96=v961194
recode job96 1=0 2=.333 4=.666 5=1 0=. 8/9=. .=.z
replace job96=.p if v961193==0
label variable job96 "job prot gays"
label define job96 0 "strg favor" 1 "strg oppose" .z "not in 96" .p "no post int"
label value job96 job96
fre job96

fre v961195 v961196
gen mil96=v961196
recode mil96 1=0 2=.333 4=.666 5=1 0=. 8/9=. .=.z
replace mil96=.p if v961195==0
label variable mil96 "gays in mil"
label value mil96 job96
fre mil96

/// polychoric abort96 homofeel96 job96 mil96
display (4*.438)/(1+.438*3)
egen moralissues96miss=rowmiss(abort96 homofeel96 job96 mil96)
egen moralissues96=rowmean(abort96 homofeel96 job96 mil96) if moralissues96miss<2
replace moralissues96=.z if mil96==.z
replace moralissues96=.p if mil96==.p
label variable moralissues96 "moralissues index"
label define moralissues2 0 "liberal" 1 "cons" .z "not in 96" .p "no post int"
label value moralissues96 moralissues2
misstable patterns abort96 homofeel96 job96 mil96, freq 
fre moralissues96miss moralissues96


/// here are the clinton equation control and evaluation variables
/// neco
fre v960386 
gen neco=v960386
recode neco 1=1 2=.75 3=.5 4=.25 5=0 8=. 0=. .=.z
label variable neco "natl eco eval"
label define neco 0 "much worse" 1 "much better" .z "not in 96"
label value neco neco
fre neco

/// strong and same
/// Uspos dummies
/// DK treated as same 
fre v960409
gen strong=v960409
recode strong 3=1 1/2=0 8/9=0 .=.z
label variable strong "US pos grew stronger"
label define strong 0 "other" 1 "stronger" .z "not in 96"
label value strong strong
fre strong

fre v960409
gen same=v960409
recode same 1=0 2=1 3=0 8/9=0 .=.z
label variable same "US pos samer"
label define same 0 "other" 1 "same" .z "not in 96"
label value same same
fre same


/// feeling thermometers
/// 1992
fre v923306  
gen clinton92pre=v923306  
recode clinton92pre 997/999=. .=.y
fre clinton92pre

fre v925302  
gen clinton92post=v925302  
recode clinton92post 997/999=. .=.y
fre clinton92post

alpha clinton92pre clinton92post, detail std
gen clinton92=(clinton92pre+clinton92post)/200
replace clinton92=.y if clinton92post==.y
label variable clinton92 "Clinton FT"
label define clinton92 0 "cool" 1 "warm" .p "no post int" .y "not in 92" 
label value clinton92 clinton92
fre clinton92

/// 1996
fre v960272  
gen clinton96pre=v960272
recode clinton96pre 996/999=. .=.z
fre clinton96pre

fre v961019  
gen clinton96post=v961019  
recode clinton96post 996=.p 997/999=. .=.z
fre clinton96post

alpha clinton96pre clinton96post, detail std
gen clinton96=(clinton96pre+clinton96post)/200
replace clinton96=.p if clinton96post==.p
replace clinton96=.z if clinton96post==.z
label define clinton96 0 "cool" 1 "warm" .p "no post int" .z "not in 96" 
label value clinton96 clinton96
fre clinton96


/// 1992
///angry
fre v923505
gen angry92=v923505
recode angry92 1=1 5=0 8/9=. .=.y
fre angry92

fre v923506
gen hope92=v923506
recode hope92 1=1 5=0 8/9=. .=.y
fre hope92

fre v923507
gen afraid92=v923507
recode afraid92 1=1 5=0 8/9=. .=.y
fre afraid92

fre v923508
gen proud92=v923508
recode proud92 1=1 5=0 8/9=. .=.y
fre proud92

alpha hope92 proud92, std detail
gen positivity92=(hope92+proud92)/2
replace positivity92=.y if v923506==.
label define emo92 0 "no" 1 "yes" .y "not in 92" 
label value positivity92 emo92
fre positivity92

alpha angry92 afraid92, std detail
gen negativity92=(angry92+afraid92)/2
replace negativity92=.y if v923505==.
label value negativity92 emo92
fre negativity92


/// 1996
fre v960341
gen angry96=v960341
recode angry96 1=1 5=0 8/9=. .=.z
fre angry96

fre v960343
gen hope96=v960343
recode hope96 1=1 5=0 8/9=. .=.z
fre hope96

fre v960345
gen afraid96=v960345
recode afraid96 1=1 5=0 8/9=. .=.z
fre afraid96

fre v960347
gen proud96=v960347
recode proud96 1=1 5=0 8/9=. .=.z
fre proud96

alpha hope96 proud96, std detail
gen positivity96=(hope96+proud96)/2
replace positivity96=.z if v960343==.
label define emo96 0 "no" 1 "yes" .z "not in 96" 
label value positivity96 emo96
fre positivity96

alpha angry96 afraid96, std detail
gen negativity96=(angry96+afraid96)/2
replace negativity96=.z if v960345==.
label value negativity96 emo96
fre negativity96


/// vote
/// 1992
/// 0 = everything but Clinton vote
/// works against standard and alternative hypotheses
fre v925601 v925608 v925609  
gen clinton92v=v925609
recode clinton92v 1=0 2=1 3/9=0 
replace clinton92v=.y if v925601==.
replace clinton92v=. if v925601==9 | v925608==9 | v925609==9
label define vote92 1 "Clinton" 0 "GOP/Perot/abstain" .y "not in 92"
label value clinton92v vote92
fre clinton92v

/// 1996
fre v961074 v961081 v961082  
gen clinton96v=v961082
recode clinton96v 1=1 2=0 3/9=0
replace clinton96v=.z if v961074==.
replace clinton96v=.p if v961074==0
replace clinton96v=. if v961082==9
label define vote2 1 "Clinton" 0 "GOP/Perot/abstain" .c "not in 96" .p "no post-int"
label value clinton96v vote2
fre clinton96v


/// composite Clinton 92 and 96 scales
/// 1992
gen negativity92r=1-negativity92 
alpha clinton92 positivity92 negativity92r clinton92v, item std 
egen clintonscale92miss=rowmiss(clinton92 positivity92 negativity92r clinton92v)
egen clintonscale92=rowmean(clinton92 positivity92 negativity92r clinton92v) if clintonscale92miss<2
replace clintonscale92=.y if v923505==.
label variable clintonscale92 "full Clinton scale"
label define clintonscale92 1 "pro-Clinton" 0 "anti-Clinton" .y "not in 92" 
label value clintonscale92 clintonscale92
fre clintonscale92miss clintonscale92 

/// 1996
gen negativity96r=1-negativity96 
alpha clinton96 positivity96 negativity96r clinton96v, item std
egen clintonscale96miss=rowmiss(clinton96 positivity96 negativity96r clinton96v)
egen clintonscale96=rowmean(clinton96 positivity96 negativity96r clinton96v) if clintonscale96miss<2
replace clintonscale96=.z if v960343==.
replace clintonscale96=.p if v961019==996
label variable clintonscale96 "full Clinton scale"
label define clintonscale96 1 "pro-Clinton" 0 "anti-Clinton" .z "not in 96" 
label value clintonscale96 clintonscale96
fre clintonscale96miss clintonscale96 


/// controls
/// black
fre v924202
gen black=v924202
recode black 1=0 2=1 3/9=0 .=.y
label variable black "black dummy"
label define black 1 "black" 0 "non-black" .y "not in 92"
label value black black
fre black

/// age
fre v923903
gen age=v923903
recode age .=.y
label define age .y "not in 92"
label value age age
fre age

/// female
fre v924201
gen female=v924201
recode female 1=0 2=1
fre female

/// college
fre v923908
gen college=v923908
recode college 0/5=0 6/7=1 99=0 .=.y 
label variable college "college grad?"
label define yes 0 "no" 1 "yes" .y "not in 92"
label value college yes
fre college


/// =========================================================================
/// = TABLE 1: STABILITY ESTIMATES AND CLINTON STABILITY ESTIMATES FOR TEXT =  
/// =========================================================================
svyset clust [pw=wt96], strata(strat) singleunit(certainty)
regress moralissues96 moralissues92 [pw=wt96], cformat(%4.2f) beta
regress pid96 pid92 [pw=wt96], cformat(%4.2f) beta 
regress orthodox96 orthodox92 [pw=wt96], cformat(%4.2f) beta
regress relcom96 relcom92 [pw=wt96], cformat(%4.2f) beta

regress clinton96 clinton92 [pw=wt96], cformat(%4.2f) beta
regress positivity96 positivity92 [pw=wt96], cformat(%4.2f) beta
regress negativity96 negativity92 [pw=wt96], cformat(%4.2f) beta
regress clinton96v clinton92v [pw=wt96], cformat(%4.2f) beta
regress clintonscale96 clintonscale92 [pw=wt96], cformat(%4.2f) beta


/// ======================================================
/// = FIGURE 1 & TABLE B: DV = PID96, IV = MORALISSUES92 =  
/// ====================================================== 
svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f) 
margins, at(moralissues92=(0(.1)1) orthodox92=1 female=1 black=0 college=0)
marginsplot, ///
  name(pid9296, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(1992-96 NES, size(large) ring(0)) ///
  xsize(5) ///
  xtitle("1992 Culture War Position", size(medlarge) margin(zero)) ///
  xlabel(0 "Progressive" .99 "Orthodox", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Party ID", size(medlarge) margin(zero)) ///
  ylabel(0 "Strg Dem" .50 "Indp" 1 "Strg Rep", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = 0.22", size(medium)) ///
  text(.04 .95 "{it:t} = 6.32", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))      
  
graph save pid9296 "C:\Graphs\pid9296.gph", replace

  
/// =======================================================
/// = FIGURE 2 & TABLE B: DV = MORALISSUES96, IV = PID92  =  
/// ======================================================= 
svy: regress moralissues96 moralissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)
margins, at(pid92=(0(.1)1) orthodox92=1 female=1 black=0 college=0)
marginsplot, ///
  name(cw9296p, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(1992-96 NES, size(large) ring(0)) ///
  xsize(5) ///
  xtitle("1992 Party ID", size(medlarge) margin(zero)) ///
  xlabel(0 "Strg Dem" .98 "Strg Rep", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Culture War Position", size(medlarge) margin(zero)) ///
  ylabel(0 "Prog" 1 "Ortho", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = 0.06", size(medium)) ///
  text(.04 .95 "{it:t} = 2.19", size(meidum)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))   

graph save cw9296p "C:\Graphs\cw9296p.gph", replace


/// ===========================================================
/// = FIGURE 3 & TABLE B: DV = ORTHODOX96, IV = MORALISSUES92 =  
/// =========================================================== 
svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)
margins, at(moralissues92=(0(.1)1) orthodox92=1 female=1 black=0 college=0)
marginsplot, ///
  name(ortho9296, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(1992-96 NES, size(large) ring(0)) ///
  xsize(5) ///
  xtitle("1992 Culture War Position", size(medlarge) margin(zero)) ///
  xlabel(0 "Progressive" .99 "Orthodox", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Bible Word of God?", size(medlarge) margin(zero)) ///
  ylabel(0 "P(no)" 1 "P(yes)", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = 2.54", size(medium)) ///
  text(.04 .95 "{it:t} = 4.11", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))  
  
graph save ortho9296 "C:\Graphs\ortho9296.gph", replace

  
/// ============================================================
/// = FIGURE 4 & TABLE B: DV = MORALISSUES96, IV = ORTHODOX92  =  
/// ============================================================ 
svy: regress moralissues96 moralissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)
margins, at(orthodox92=(0(1)1) female=1 black=0 college=0)
marginsplot, ///
  name(cw9296o, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(1992-96 NES, size(large) ring(0)) ///
  xsize(5) ///
  xtitle("1992 Bible Word of God?", size(medlarge) margin(zero)) ///
  xlabel(0 "No" .98 "Yes", noticks labsize(medium)) ///
  ytitle("1996 Culture War Position", size(medlarge) margin(zero)) ///
  ysize(5) ///
  ylabel(0 "Prog" 1 "Ortho", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = -0.00", size(medium)) ///
  text(.04 .95 "{it:t} = -0.07", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

graph save cw9296o "C:\Graphs\cw9296o.gph", replace

    
/// =========================================================
/// = FIGURE 5 & TABLE B: DV = RELCOM96, IV = MORALISSUES92 =  
/// ========================================================= 
svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)
margins, at(moralissues92=(0(.1)1) orthodox92=1 female=1 black=0 college=0)
marginsplot, ///
  name(relcom9296, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(1992-96 NES, size(large) ring(0)) ///
  xsize(5) ///
  xtitle("1992 Culture War Position", size(medlarge) margin(zero)) ///
  xlabel(0 "Progressive" .99 "Orthodox", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Religious Commitment", size(medlarge) margin(zero)) ///
  ylabel(0 "Weak" 1 "Strong", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = 0.07", size(medium)) ///
  text(.04 .95 "{it:t} = 1.85", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

graph save relcom9296 "C:\Graphs\relcom9296.gph", replace
  
 
/// ==========================================================
/// = FIGURE 6 & TABLE B: DV = MORALISSUES96, IV = RELCOM92  =  
/// ==========================================================   
svy: regress moralissues96 moralissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)
margins, at(relcom92=(0(.1)1)orthodox92=1 female=1 black=0 college=0)
marginsplot, ///
  name(cw9296r, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(1992-96 NES, size(large) ring(0)) ///
  xsize(5) ///  
  xtitle("1992 Religious Commitment", size(medlarge) margin(zero)) ///
  xlabel(0 "Weak" .98 "Strong", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Culture War Position", size(medlarge) margin(zero)) ///
  ylabel(0 "Prog" 1 "Ortho", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = 0.09", size(medium)) ///
  text(.04 .95 "{it:t} = 3.69", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

graph save cw9296r "C:\Graphs\cw9296r.gph", replace


/// ================================================================
/// = FIGURE 7 and TABLE F: DV = MORALISSUES96, IV = CLINTON EVALS =  
/// ================================================================ 
svy: regress moralissues96 moralissues92 clinton92 pid92 age female black college, cformat(%4.2f)
margins, at(clinton92=(0(.1)1) female=1 black=0 college=0)
marginsplot, ///
  name(moralclinton, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(Feeling Thermometer, size(large) ring(0)) ///
  xsize(5) ///  
  xtitle("1992 Feelings toward Clinton", size(medlarge) margin(zero)) ///
  xlabel(0 "Cool" .98 "Warm", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Culture War Position", size(medlarge) margin(zero)) ///
  ylabel(0 "Prog" 1 "Ortho", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = -0.07", size(medium)) ///
  text(.04 .95 "{it:t} = -1.29", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

svy: regress moralissues96 moralissues92 positivity92 pid92 age female black college, cformat(%4.2f)
margins, at(positivity92=(0(.5)1) female=1 black=0 college=0)
marginsplot, ///
  name(moralpositive, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(Positive Emotions, size(large) ring(0)) ///
  xsize(5) ///  
  xtitle("1992 Positive Emotions - Clinton", size(medlarge) margin(zero)) ///
  xlabel(0 "Not felt" .98 "Felt", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Culture War Position", size(medlarge) margin(zero)) ///
  ylabel(0 "Prog" 1 "Ortho", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = -0.03", size(medium)) ///
  text(.04 .95 "{it:t} = -1.22", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

svy: regress moralissues96 moralissues92 negativity92 pid92 age female black college, cformat(%4.2f)
margins, at(negativity92=(0(.5)1) female=1 black=0 college=0)
marginsplot, ///
  name(moralnegative, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(Negative Emotions, size(large) ring(0)) ///
  xsize(5) ///  
  xtitle("1992 Negative Emotions - Clinton", size(medlarge) margin(zero)) ///
  xlabel(0 "Not felt" .98 "Felt", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Culture War Position", size(medlarge) margin(zero)) ///
  ylabel(0 "Prog" 1 "Ortho", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = 0.02", size(medium)) ///
  text(.04 .95 "{it:t} = 0.86", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

svy: regress moralissues96 moralissues92 clinton92v pid92 age female black college, cformat(%4.2f)
margins, at(clinton92v=(0(1)1) female=1 black=0 college=0)
marginsplot, ///
  name(moralvote, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(Voted for Clinton, size(large) ring(0)) ///
  xsize(5) ///  
  xtitle("1992 Clinton Vote", size(medlarge) margin(zero)) ///
  xlabel(0 "No" .98 "Yes", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Culture War Position", size(medlarge) margin(zero)) ///
  ylabel(0 "Prog" 1 "Ortho", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = -0.04", size(medium)) ///
  text(.04 .95 "{it:t} = -2.11", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

graph combine moralclinton moralpositive moralnegative moralvote, ///
  name(figure7, replace) ///
  title("Figure 7: Effect of Clinton Evaluations{sub:92} on Culture War Positions{sub:96}, NES Panel", size(small)) /// 
  note(Notes: Point estimates bounded by 95% confidence intervals. Estimates derived from models 1-4 in Table F., position(6) size(vsmall)) ///
  plotregion(lcolor(white))


/// =================================================================
/// = FIGURE 8 and TABLE G: DV = CLINTON EVALS, IV = MORALISSUES96 =  
/// ================================================================= 
svy: regress clinton96 clinton92 moralissues92 pid92 neco strong same age female black college, cformat(%4.2f)
margins, at(moralissues92=(0(.1)1) strong=0 same=1 female=1 black=0 college=0)
marginsplot, ///
  name(clinton1, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(Feeling Thermometer, size(large) ring(0)) ///
  xsize(5) ///
  xtitle("1992 Culture War Position", size(medlarge) margin(zero)) ///
  xlabel(0 "Progressive" .99 "Orthodox", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Feelings toward Clinton", size(medlarge) margin(zero)) ///
  ylabel(0 "Cool" 1 "Warm", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = -0.13", size(medium)) ///
  text(.04 .95 "{it:t} = -3.13", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

svy: regress positivity96 positivity92 moralissues92 pid92 neco strong same age female black college, cformat(%4.2f)
margins, at(moralissues92=(0(.1)1) strong=0 same=1 female=1 black=0 college=0)
marginsplot, ///
  name(clinton2, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(Positive Emotions, size(large) ring(0)) ///
  xsize(5) ///
  xtitle("1992 Culture War Position", size(medlarge) margin(zero)) ///
  xlabel(0 "Progressive" .99 "Orthodox", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Positive Emotions - Clinton", size(medlarge) margin(zero)) ///
  ylabel(0 "Not felt" 1 "Felt", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = -0.18", size(medium)) ///
  text(.04 .95 "{it:t} = -3.44", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

svy: regress negativity96 negativity92 moralissues92 pid92 neco strong same age female black college, cformat(%4.2f)
margins, at(moralissues92=(0(.1)1) strong=0 same=1 female=1 black=0 college=0)
marginsplot, ///
  name(clinton3, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(Negative Emotions, size(large) ring(0)) ///
  xsize(5) ///
  xtitle("1992 Culture War Position", size(medlarge) margin(zero)) ///
  xlabel(0 "Progressive" .99 "Orthodox", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Negative Emotions - Clinton", size(medlarge) margin(zero)) ///
  ylabel(0 "Not felt" 1 "Felt", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = 0.11", size(medium)) ///
  text(.04 .95 "{it:t} = 1.64", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

svy: logit clinton96v clinton92v moralissues92 pid92 neco strong same age female black college, cformat(%4.2f) 
margins, at(moralissues92=(0(.1)1) clinton92v=1 strong=0 same=1 female=1 black=0 college=0)
marginsplot, ///
  name(clinton4, replace) ///
  plotopts(mcolor(black)) ciopts(lcolor(black)) ///
  title(Voted for Clinton, size(large) ring(0)) ///
  xsize(5) ///  
  xtitle("1992 Culture War Position", size(medlarge) margin(zero)) ///
  xlabel(0 "Progressive" .99 "Orthodox", noticks labsize(medium)) ///
  ysize(5) ///
  ytitle("1996 Clinton Vote", size(medlarge) margin(zero)) ///
  ylabel(0 "No" 1 "Yes", noticks labsize(medium) angle(0)) ///
  yline(.50, lpattern(shortdash))  ///
  text(.11 .95 "b = -1.31", size(medium)) ///
  text(.04 .95 "{it:t} = -2.66", size(medium)) ///
  scheme(s1mono) ///
  scale(.5) aspectratio(1) ///
  plotregion(lcolor(white))

graph combine clinton1 clinton2 clinton3 clinton4, ///
  name(figure8, replace) ///
  title("Figure 8: Effect of Culture War Positions{sub:92} on Clinton Evaluations{sub:96}, NES Panel", size(small)) /// 
  note(Notes: Point estimates bounded by 95% confidence intervals. Estimates derived from models 1-4 in Table G., position(6) size(vsmall)) ///
  plotregion(lcolor(white))


/// ==============================================
/// = SUPPLEMENTAL MATERIALS: ON-LINE APPENDICES =  
/// ==============================================

/// ======================================================
/// = TABLE A: DESCRIPTIVE STATISTICS FOR KEY VARIABLES =  
/// ======================================================
summ moralissues92 pid92 orthodox92 relcom92
summ moralissues96 pid96 orthodox96 relcom96

  
/// =============================
/// = FIGURE A: Kernal Desnity  =  
/// =============================     
twoway(kdensity moralissues92, lcolor(red) lwidth(medium) kernel(gaussian) bwidth(.075)) /// 
 (kdensity moralissues96, lcolor(blue) lwidth(medium) kernel(gaussian) bwidth(.075) ), ///
 name(cw9296density, replace) ///
 title("1992-96 NES", size(medsmall) ring(0)) ///
 ytitle("Density", size(medsmall) margin(zero)) ///
 ylabel(.00 " " 1.5 " ", labsize(small) angle(zero) tstyle(major_notick)) ///
 xlabel(0 "Progressive" .97 "Orthodox", labsize(small) tstyle(major_notick)) ///
 xtitle("Position on Culture War Issues", size(medsmall) margin(zero)) ///
 legend(on order(1 "1992" 2 "1996") cols(2) ring(0)) ///
 plotregion(lcolor(white)) ///
 scheme(s1mono)
 
graph save cw9296density "C:\Graphs\cw9296density.gph", replace


/// ================================================================
/// = TABLE H ROBUSTNESS CHECK: ABORTION & GAY RIGHTS? ON PARTY ID =  
/// ================================================================
/// 3 items used to measure gay rights
/// 1 item used to measure abortion 

fre abort92
egen gayissues92miss=rowmiss(homofeel92 job92 mil92)
egen gayissues92=rowmean(homofeel92 job92 mil92) if moralissues92miss<2
fre gayissues92

fre abort96
egen gayissues96miss=rowmiss(homofeel96 job96 mil96)
egen gayissues96=rowmean(homofeel96 job96 mil96) if moralissues96miss<2
fre gayissues96

svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f) 
svy: regress pid96 abort92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)  
svy: regress pid96 gayissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f) 
svy: regress pid96 abort92 gayissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f) 


/// =======================================================================
/// = TABLE I ROBUSTNESS CHECK: ABORTION & GAY RIGHTS? ON ORTHODOX BELIEF =  
/// =======================================================================
/// 3 items used to measure gay rights
/// 1 item used to measure abortion 

svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f) 
svy: logit orthodox96 abort92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)  
svy: logit orthodox96 gayissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f) 
svy: logit orthodox96 abort92 gayissues92  pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)


/// ===============================================================
/// = TABLE J ROBUSTNESS CHECK: ABORTION & GAY RIGHTS? ON RELCOM =  
/// ===============================================================
/// 3 items used to measure gay rights
/// 1 item used to measure abortion 

svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f) 
svy: regress relcom96 abort92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)  
svy: regress relcom96 gayissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f) 
svy: regress relcom96 abort92 gayissues92 pid92 orthodox92 relcom92 age female black college, cformat(%4.2f)


/// ========================================================
/// = TABLE K ROBUSTNESS CHECK: CONTROLS FOR AID TO BLACKS =  
/// ======================================================== 
fre v925936
gen hire92=v925936
recode hire92 1=0 2=.333 4=.666 5=1 0=.
label variable hire92 "AA hiring blacks"
label define oppose 0 "favor stgly" 1 "oppose stgly" 
label value hire92 oppose
fre hire92

fre v925948
gen quota92=v925948
recode quota92 1=0 2=.333 4=.666 5=1 0=.
label variable quota92 "AA college blacks"
label value quota92 oppose
fre quota92

fre v923729
gen black92=v923729
recode black92 1=0 2=.5 3/7=1 8/9=.
label define SPEND 0 "inc" 1 "dec"
label value black92 SPEND
fre black92

///polychoric hire92 quota92 black92
display (3*.552)/(1+.552*2)
egen black92miss=rowmiss(hire92 quota92 black92)
egen blackaid92=rowmean(hire92 quota92 black92) if black92miss<2
label variable blackaid92 "aid to blacks"
label value blackaid92 oppose
fre blackaid92 

svy: regress moralissues96 moralissues92 pid92 orthodox92 relcom92 age female black college blackaid92, cformat(%4.2f)
svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black college blackaid92, cformat(%4.2f)  
svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college blackaid92, cformat(%4.2f)
svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college blackaid92, cformat(%4.2f)

/// these estimates drop moral issues: we'd expect aid to matter little for the religious DVs
svy: regress moralissues96 pid92 orthodox92 relcom92 age female black college blackaid92, cformat(%4.2f)
svy: regress pid96 pid92 orthodox92 relcom92 age female black college blackaid92, cformat(%4.2f)  
svy: logit orthodox96 pid92 orthodox92 relcom92 age female black college blackaid92, cformat(%4.2f)
svy: regress relcom96 pid92 orthodox92 relcom92 age female black college blackaid92, cformat(%4.2f)


/// =========================================================
/// = TABLE L ROBUSTNESS CHECK: CONTROLS FOR SOCIAL WELFARE =  
/// ========================================================= 
/// gov92
fre v923701
gen gov92=v923701
replace gov92=(1-(gov92-1)/6) 
replace gov92=. if v923701==0 |v923701==8 |v923701==9
label variable gov92 "gov services"
label define GOV 0 "provide more" 1 "provide less" 
label value gov92 GOV
fre gov92

/// health
fre v923716    
gen health92=v923716
recode health92 0=. 8/9=.
replace health92=(health92-1)/6
label variable health92 "gov health care"
label value health92 GOV
fre health92

/// govjob
fre v923718    
gen govjob92=v923718
recode govjob92 0=. 8/9=.
replace govjob92=(govjob92-1)/6
label variable govjob92 "gov  provide job"
label value govjob92 GOV
fre govjob92

alpha gov92 health92 govjob92, item std
egen govhelp92miss=rowmiss(gov92 health92 govjob92)
egen govhelp92=rowmean(gov92 health92 govjob92) if govhelp92miss<2
label value govhelp92 GOV
fre govhelp92

svy: regress moralissues96 moralissues92 pid92 orthodox92 relcom92 age female black college govhelp92, cformat(%4.2f) 
svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black college govhelp92, cformat(%4.2f) 
svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college govhelp92, cformat(%4.2f) 
svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college govhelp92, cformat(%4.2f) 

/// these estimates drop moral issues: we'd expect aid to matter little for the religion models
svy: regress moralissues96 pid92 orthodox92 relcom92 age female black college govhelp92, cformat(%4.2f) 
svy: regress pid96 pid92 orthodox92 relcom92 age female black college govhelp92, cformat(%4.2f) 
svy: logit orthodox96 pid92 orthodox92 relcom92 age female black college govhelp92, cformat(%4.2f) 
svy: regress relcom96 pid92 orthodox92 relcom92 age female black college govhelp92, cformat(%4.2f) 


/// ============================================================
/// = TABLE M ROBUSTNESS CHECK: SYMBOLIC IDEOLOGY ON ALL 4 DVS =  
/// ============================================================
/// ideo
/// based on 7-pt scale 
/// moderates, haven't thoughts, DK probe used
/// mod probe = v923511, DK/haven't thought probe = v923512
fre v923509 v923511 v923512
gen ideo92=v923509
recode ideo92 0=. 8/9=.
replace ideo92=3 if v923511==1
replace ideo92=4 if v923511==3
replace ideo92=5 if v923511==5
replace ideo92=3 if v923512==1
replace ideo92=4 if v923512==3
replace ideo92=5 if v923512==5
replace ideo92=(ideo92-1)/6
label variable ideo92 "Ideo ID"
label define ideo  0 "ext lib" 1 "ext con"
label value ideo92 ideo
fre ideo92

svy: regress moralissues96 moralissues92 pid92 orthodox92 relcom92 age female black college ideo92, cformat(%4.2f) 
svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black college ideo92, cformat(%4.2f) 
svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college ideo92, cformat(%4.2f) 
svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college ideo92, cformat(%4.2f) 


/// ===========================================================
/// = TABLE O ROBUSTNESS CHECK: AUTHORITARIANISM ON ALL 4 DVS =  
/// ===========================================================
/// use the standard child rearing items
/// auth92
fre v926019
gen auth1=v926019
recode auth1 1=0 3=.5 5=1 0=. 8/9=.
label variable auth1 "resp eld v. indp"
fre auth1

fre v926020
gen auth2=v926020
recode auth2 1=1 3=.5 5=0 0=. 8/9=.
label variable auth2 "obey v. self-rel"
fre auth2

fre v926021
gen auth3=v926021
recode auth3 1=0 3=.5 5=1 0=. 8/9=.
label variable auth3 "good manners v. curiosity"
fre auth3

fre v926022
gen auth4=v926022
recode auth4 1=0 3=.5 5=1 0=. 8/9=.
label variable auth4 "well behave v. consid"
fre auth4

/// polychoric auth1 auth2 auth3 auth4
display (.496*4)/(1+.496*3)
gen auth92=(auth1+auth2+auth3+auth4)/4
label variable auth92 "authoritarian  scale"
label define auth92 0 "libertarian" 1 "authoritarian" 
label value auth92 auth92
fre auth92

svy: regress moralissues96 moralissues92 pid92 orthodox92 relcom92 age female black college auth92, cformat(%4.2f)
svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black college auth92, cformat(%4.2f) 
svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college auth92, cformat(%4.2f)
svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college auth92, cformat(%4.2f)


/// ===========================================
/// = TABLE R ROBUSTNESS CHECK: INTERACTIONS  =  
/// ===========================================
/// age
gen moral_age=moralissues92*age

svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black college moral_age, cformat(%4.2f) 
svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college moral_age, cformat(%4.2f) 
svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college moral_age, cformat(%4.2f) 

/// pid
gen moral_pid=moralissues92*pid92
svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black college moral_pid, cformat(%4.2f) 
svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college moral_pid, cformat(%4.2f) 
svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college moral_pid, cformat(%4.2f) 

/// education
svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black  ///
  i.college i.college#c.moralissues92  
  
svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black  ///
  i.college i.college#c.moralissues92   

svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black  ///
  i.college i.college#c.moralissues92

/// know
fre v960070
gen know96=v960070
recode know96 1=5 2=4 3=3 4=2 5=1 
replace know96=(know-1)/4
replace know96=.n if v960070==9
fre know96

gen moralissues92_k=moralissues92*know96

svy: regress pid96 moralissues92 pid92 orthodox92 relcom92 age female black college know96 moralissues92_k
svy: logit orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college know96 moralissues92_k
svy: regress relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college know96 moralissues92_k


/// ============================================
/// = TABLE U ROBUSTNESS CHECK: EIV REGRESSION =  
/// ============================================
/// we use ordinal alpha reliability estimates for ordinal level indicators 
/// these estimates are constrained so that stability point estimate <= .90
/// otherwise, EIV results can suggest lagged variables are perfectly stable
/// for example, lagged moral issues 92 is almost perfectly stable in the moralissues96 equation 
/// doesn't square with evidence of substantial macro-level liberalization in periods too short to be accounted for by cohort replacement
/// addresses criticisms raised by Converse, Luskin, Zaller about measurement (over)adjustments that artifactually enahnce stability
/// pid estimates comes from Chen and Goren (2016) estimates in PRQ paper (3-wave Wiley-Wiley models)
/// use OLS for dichotomous orthodox measure
eivreg moralissues96 moralissues92 pid92 orthodox92 relcom92 age female black college, reliab(pid92 .86 moralissues92 .81 relcom92 .85) cformat(%4.2f)
eivreg pid96 moralissues92 pid92 orthodox92 relcom92 age female black college, reliab(pid92 .87 moralissues92 .79 relcom92 .85) cformat(%4.2f) 
eivreg orthodox96 moralissues92 pid92 orthodox92 relcom92 age female black college, reliab(pid92 .86 moralissues92 .79 relcom92 .85) cformat(%4.2f)
eivreg relcom96 moralissues92 pid92 orthodox92 relcom92 age female black college, reliab(pid92 .86 moralissues92 .79 relcom92 .91) cformat(%4.2f)

  
/// ===========================================
/// = TABLE Y ROBUSTNESS CHECK: IV REGRESSION =  
/// ===========================================
/// we use 2SLS for moral issues, pid, and relcom models
/// we use ivprobit for orthodox model

/// 2SLS: pid 
svy: ivregress 2sls moralissues96 moralissues92 orthodox92 relcom92 age female black college (pid96 = pid92), cformat(%4.2f) 
svy: ivregress 2sls pid96 pid92  orthodox92 relcom92 age female black college (moralissues96= moralissues92), cformat(%4.2f) 

/// 2SLS: orthodox
svy: ivregress 2sls moralissues96 pid92 moralissues92 relcom92 age female black college (orthodox96 = orthodox92), cformat(%4.2f) 
svy: ivprobit orthodox96 pid92 orthodox92 relcom92 age female black college (moralissues96 = moralissues92), cformat(%4.2f) 

/// 2SLS: relcom
svy: ivregress 2sls moralissues96 pid92 moralissues92 orthodox92 age female black college (relcom96 = relcom92), cformat(%4.2f) 
svy: ivregress 2sls relcom96 pid92 orthodox92 relcom92 age female black college (moralissues96 = moralissues92), cformat(%4.2f) 



 
 
 
 
 
 
